#include "ADC.h"

ADC adc;

ADC::ADC()
{
    pinMode(14,OUTPUT);
}

u16 ADC::get(bool mode)
{
    u16 num;
    u16 x;
    u8 i;
    if(mode)
    {
        num=analogRead(A0);
        if(num>1023)
            num=1020;
        for(i=0;i<7;i++)
        {
            light_dat[i]=light_dat[i+1];
        }
        light_dat[7]=num>>1;
        num=0;
        for(i=0;i<8;i++)
        {
            num+=light_dat[i];
        }
        num>>=3;
        if(!num)
            num=1;
    }
    else
    {
        num=analogRead(A0);
        if(num<961)
            led.bat_show_flg=1;
        if(num>970)
            led.bat_show_flg=0;
        battery_adc_buf = num;
        if(led.bat_show_flg)
        {
            num=(num-790)*10/205;
            for(i=0;i<7;i++)
            {
                bat_dat[i]=bat_dat[i+1];
            }
            bat_dat[7]=num;
            num=0;
            for(i=0;i<8;i++)
            {
                num+=bat_dat[i];
            }
            num>>=3;
        }
    }
    digitalWrite(14,!mode);
    return num;
}
// extern u8 led_light_gram;
void ADC::fresh()
{
    u16 adc_buf;
    if(adc_mode)
    {
      adc_buf=get(LIGHT);
      if(last_dat!=adc_buf)
      {
        led.color(adc_buf);
        oled.light(adc_buf/2);
        // led_light_gram = adc_buf/2;
        last_dat = adc_buf;
      }

    }
    else
    {
        adc_buf=get(BATTERY);
        // led.battery(adc_buf);
    }
    adc_mode=!adc_mode;  
}
